"""
python面向对象 --私有化
1、_属性、_方法
   约定俗成
   用过对象名._属性/_方法实际上是可以访问的
   但是它的意思就是别访问我

2、__属性/__方法
   深度私有
   通过对象名.__属性__方法 访问不到

_和__私有化方式同样在模块（.py）当中也支持
模块内私有.景象在模块内使用，其他模块导的时候，表示这些不想被外部访问

什么场景下做成私有
——什么情况下定义的属性或者函数不需要被外部使用
当模块/类要实现一个大功能，当这个功能由很多个内部的小功能（函数不应该太复杂）组成的
但是这些小功能对于使用者而言不需要看见/不需要使用，我们就会做成私有化

"""

class Person:

    name = "小明"

    def __init__(self, name, sex, city, age = 18):
        self.my_name = name   #给对象添加name属性,给对象赋值
        self.my_sex = sex
        self.my_city = city
        self.my_age = age
        self._private_money = 2000
        self.__spripri_money = 4000

        # 如果类内部定义了访问私有的办法，可以通过这个方法得到私有属性的值
        # 如果没有定义的话，那私有属性就是除了类以外，都不可以访问
    def get_spri_money(self):
        print(self.__spripri_money)

pp = Person("小明", "男", "成都")

print("浅度私有：{}".format(pp._private_money))
# print("深度私有：{}".format(pp.__spripri_money)) 没办法打印会报错,直接访问不了
